<?php
namespace app\common\lib;

// 反射类 工厂模式
class ClassArr{

	// 自定义类库
	public static function smsClassStat(){
		return [
			"ali" => "app\common\lib\sms\AliSms",
			"baidu" => "app\common\lib\sms\BaiduSms",
		];
	}

	// 初始化类
	public static function initClass($type,$class,$params = [],$needInstance = false){
		// 如果工厂模式调用的方法是静态的，返回类库
		// 如果调用的方法不是静态的，返回对象
		if(!array_key_exists($type, $class)){
			return false;
		}

		$className = $class[$type];
		// ReflectionClass('A') => 建立A反射类
		// ->newInstanceArgs => 相当于实例化A对象
		return $needInstance == true 
			? (new \ReflectionClass($className))->newInstanceArgs($params)
			: $className;
	}
}